#!/usr/bin/env python3
"""
使用pdfminer3k转换 ch01.pdf 文件的示例脚本

pdfminer3k的优势:
- 更好的中文文本提取
- 复杂布局分析
- 对扫描版PDF有更好的支持

使用方法:
    python convert_ch01_pdfminer.py
"""

from pdf_converter_pdfminer import PDFMinerConverter

def main():
    """主函数 - 使用pdfminer3k转换 docs/ch01.pdf 文件"""
    print("🚀 使用pdfminer3k转换PDF文件")
    print("=" * 50)

    # 创建转换器实例
    converter = PDFMinerConverter(encoding='utf-8')

    # PDF文件路径
    pdf_path = "docs/ch01.pdf"

    # 输出路径
    output_path_basic = "docs/ch01_pdfminer_basic.txt"
    output_path_layout = "docs/ch01_pdfminer_layout.txt"
    output_path_auto = "docs/ch01_pdfminer_auto.txt"

    try:
        print("📄 方法1: 基本文本提取")
        print("-" * 30)
        result_basic = converter.convert_pdf_to_txt(
            pdf_path=pdf_path,
            output_path=output_path_basic,
            method='basic',
            clean=True
        )

        # 显示文件信息
        import os
        if os.path.exists(result_basic):
            file_size = os.path.getsize(result_basic)
            print(f"✅ 基本方法完成!")
            print(f"📄 输入文件: {pdf_path}")
            print(f"📝 输出文件: {result_basic}")
            print(f"📊 文件大小: {file_size:,} 字节")

            # 显示前几行内容
            with open(result_basic, 'r', encoding='utf-8') as f:
                content = f.read()
                lines = content.split('\n')[:5]
                print(f"📖 内容预览:")
                for i, line in enumerate(lines, 1):
                    if line.strip():
                        print(f"   {i}. {line}")

        print("\n" + "=" * 50)
        print("📄 方法2: 布局分析提取")
        print("-" * 30)
        result_layout = converter.convert_pdf_to_txt(
            pdf_path=pdf_path,
            output_path=output_path_layout,
            method='layout',
            clean=True
        )

        if os.path.exists(result_layout):
            file_size = os.path.getsize(result_layout)
            print(f"✅ 布局分析完成!")
            print(f"📝 输出文件: {result_layout}")
            print(f"📊 文件大小: {file_size:,} 字节")

            # 显示前几行内容
            with open(result_layout, 'r', encoding='utf-8') as f:
                content = f.read()
                lines = content.split('\n')[:5]
                print(f"📖 内容预览:")
                for i, line in enumerate(lines, 1):
                    if line.strip():
                        print(f"   {i}. {line}")

        print("\n" + "=" * 50)
        print("📄 方法3: 自动选择最佳方法")
        print("-" * 30)
        result_auto = converter.convert_pdf_to_txt(
            pdf_path=pdf_path,
            output_path=output_path_auto,
            method='auto',
            clean=True
        )

        if os.path.exists(result_auto):
            file_size = os.path.getsize(result_auto)
            print(f"✅ 自动选择完成!")
            print(f"📝 输出文件: {result_auto}")
            print(f"📊 文件大小: {file_size:,} 字节")

        print("\n" + "=" * 50)
        print("🎯 转换完成! 请检查生成的三个文件:")
        print(f"   1. {output_path_basic} (基本方法)")
        print(f"   2. {output_path_layout} (布局分析)")
        print(f"   3. {output_path_auto} (自动选择)")
        print("\n💡 建议: 选择文本最清晰、格式最好的版本使用")

    except FileNotFoundError:
        print(f"❌ 错误: 找不到文件 {pdf_path}")
        print("请确保PDF文件存在于 docs/ 目录中")
    except Exception as e:
        print(f"❌ 转换过程中发生错误: {str(e)}")

if __name__ == "__main__":
    main()